package com.zcsy.manage.service.mall;

import java.util.List;

import com.zcsy.manage.model.mall.IntegralRecord;

/**
 * @Title: IIntegralRecordService.java
 * @Package： com.zcsy.manage.persistence.mall 
 * @Description: 积分变更服务层接口类
 * @author yangfan 373188993@qq.com
 * @Copyright: 2016 武汉恒数利通信息技术有限公司 All rights reserved.
 * @date 2016年7月1日
 * @version 1.0
 * @see JDK1.7.0_75
 * @since
 */
public interface IIntegralRecordService {
    
    /**
     * @Description 插入积分变更列表
     * @param integralRecord 积分变更表对象
     * @return 1：插入成功；0：插入失败
     * @author yangfan 373188993@qq.com
     * @date 2016年7月1日
     * @see 
     */
    int insert(IntegralRecord integralRecord);

    /**
     * @Description 获取积分变更列表
     * @param integralRecord 积分变更表对象
     * @return 积分变更列表对象
     * @author yangfan 373188993@qq.com
     * @date 2016年7月1日
     * @see 
     */
    List<IntegralRecord> selectByUserAccount(IntegralRecord integralRecord);
    
    /**
     * @Description 插入积分变更记录<br>
     * 
     * @param userAccount 用户登录名
     * @param integralName 积分配置名称（英文）
     * @return 1：插入成功  0：插入失败
     * @author caiyinli 13277030520@163.com
     * @date 2016年7月13日
     * @see 
     */
    int changeIntegralMethod(String userAccount, String integralName);

    /**
     * @Description 根据userAccount和积分分类描述获取最近一次得到该积分记录<br>
     * 
     * @param integralRecord 
     * @return 1：插入成功  0：插入失败
     * @author yangfan 373188993@qq.com
     * @date 2016年7月15日
     * @see 
     */
    IntegralRecord selectLastRecordByUserAccountAndDespription(IntegralRecord integralRecord);
    
    /**
     * @Description:通过登陆账号查询当前用户当天的积分变更记录
     * @param userAccount 登陆账号
     * @author huangls 1449700087@qq.com
     * @date 2016年8月23日
     */
    List<IntegralRecord> selectRecordByUserAccount(String userAccount);
    
    /**
     * @Description:查询用户当天签到积分变更记录
     * @param userAccount 登陆账号
     * @author huangls 1449700087@qq.com
     * @date 2016年8月23日
     */
    IntegralRecord selectTodaySignInRecordByUserAccount(String userAccount);
    
    
    /**
     * @description 查询用户当天固定某一项目的积分变动信息
     * @param integralRecord 积分变更表对象
     * @return
     * IntegralRecord 返回一个积分变动表对象（null为该用户未获得过此项目的积分）
     * @author chenxin
     * @date 2016年8月30日下午6:59:29
     */
    IntegralRecord selectTodayRecord(IntegralRecord integralRecord);
    
    /**
     * @description 根据userId获取用户当天积分变更的总和
     * @param userId 用户id
     * @return
     * Integer 积分变更的总和
     * @author chenxin
     * @date 2016年8月30日下午8:34:57
     */
    Integer getIntegralOfToday(String userId);
    
    /**
     * @description 测试用户是否获得过该项目的积分
     * @param userId 用户id
     * @param descrption 积分描述
     * @return
     * boolean 获得过：返回false;没获得：返回true;
     * @author chenxin
     * @date 2016年8月30日下午8:04:34
     */
    boolean testWhetherUserGetTheIntegral(String userId,String descrption);
    
    /**
     * @description 当达到积分上限时的积分插入公共方法
     * @param userAccount 用户id
     * @param integralName 积分英文名
     * @return
     * int 返回成功或失败 1：成功 ，0：失败
     * @author chenxin
     * @date 2016年8月30日下午8:54:34
     */
    public int changeIntegralWhenToMaxValuePerDay(String userAccount, String integralName, Integer value);
}
